package com.yeyks.consumer.dal.dao;

import com.yeyks.common.appcommon.dto.platform.AppMemberCardDTO;
import com.yeyks.common.appcommon.param.platform.QueryMinMemberCardParam;
import com.yeyks.common.dto.AccountCardDTO;
import com.yeyks.common.dto.member.MemberCardSelectChoiceAllDTO;
import com.yeyks.common.dto.member.MemberCardSelectServerAllDTO;
import com.yeyks.common.result.member.MemberCardHelpPayListResult;
import com.yeyks.consumer.dal.domain.MemberCard;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeyks.common.dto.MemberCardSelectAllDTO;
import com.yeyks.consumer.dto.CardNoResult;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;


/**
 * <p>
 * 会员卡表 Mapper 接口
 * </p>
 *
 * @author yun
 * @since 2019-06-25
 */
public interface MemberCardMapper extends BaseMapper<MemberCard> {

    int unBindMemberCard(
            @Param("version") String version
            , @Param("batch") String batch
            , @Param("startCardIdB") Long startCardIdB
            , @Param("endCardIdB") Long endCardIdB
            , @Param("status") Integer status
    );

    List<MemberCardSelectAllDTO> selectForManagementPage(
            @Param("cardNo") String cardNo
            , @Param("hotelId") Integer hotelId
            , @Param("status") Integer status
            , @Param("phone") String phone
            , @Param("cardType") Integer cardType
    );

    Long countCardByHotelId(@Param("hotelId") Integer hotelId,
                            @Param("cardType")Integer cardType);
    MemberCard selectByCardNo(@Param("cardNo") String cardNo);

    CardNoResult selectCardNo(@Param("cardType") Integer cardType);

    /**
     * 查询服务商的所有卡片信息
     *      * @param cardNo 卡号
     *      * @param hotelId 酒店ID
     *      * @param salerName 运营商服务商名称
     *      * @param status 状态
     *      * @param phone 手机号
     *      * @param salerIdList 该卡商的列表
     * @return
     */
    List<MemberCardSelectServerAllDTO> selectServerForManagementPage(
            @Param("cardNo") String cardNo
            , @Param("hotelId") Integer hotelId
            , @Param("salerName") String salerName
            , @Param("status") Integer status
            , @Param("phone") String phone
            , @Param("cardType") Integer cardType
            , @Param("list") List<Integer> salerIdList);

    AccountCardDTO selectOperatorIdAndCardNoByUserId(@Param("userId") Integer userId,
                                                     @Param("cardType") Integer cardType);

    /**
     * 查询酒店 精选卡片信息{可以和所有卡片信息接口合并，看情况}
     * @param cardNo 卡号
     * @param hotelId 酒店Id
     * @param phone 手机号
     * @param status 状态
     * @param cardType 1:甄选  2：精选
     * @return
     */
    List<MemberCardSelectChoiceAllDTO> selectChoiceForManagementPage(@Param("cardNo") String cardNo,
                                                                     @Param("hotelId") Integer hotelId,
                                                                     @Param("phone") String phone,
                                                                     @Param("status") Integer status,
                                                                     @Param("cardType") Integer cardType);

    /**
     * 分页查询【优享】VIP卡（admin-app）
     *
     * @param param 查询参数
     * @return 返回结果
     */
    List<AppMemberCardDTO> selectMinVipList(@Param("param") QueryMinMemberCardParam param);

    List<MemberCardHelpPayListResult> selectHelpPayList(Map<String, Object> map);

    List<String> selectCardNoBySalerId(@Param(value = "salerId") Integer salerId);
}
